Conventional memory architecture generally distinguishes between two types of memory. The first type of memory is volatile memory that can only store data while power is supplied to the memory. The second type of memory is Non-Volatile Memory (NVM) that retains data without being powered. NVM is typically considered to take longer to read and write data than volatile memory. Persistently stored data is conventionally transferred from NVM to volatile memory to perform operations on the data. The modified data or other resulting data is then transferred or flushed back to the NVM to be persistently stored.
In the example of an Operating System (OS), a volatile memory such as a Dynamic Random Access Memory (DRAM) may be used by the OS when executing a process or a thread, such as a subset of instructions in a process. The OS may create a byte-addressable, virtual address space that maps to locations in the DRAM for receiving data from files stored in the NVM. The data can be copied to memory pages of a fixed size in the address space that is accessed by a processor, such as a Central Processing Unit (CPU).
New and developing NVM technologies, such as Magnetoresistive RAM (MRAM), 3D XPoint, or Resistive RAM (RRAM), have been recently proposed that can provide faster access times for reading and writing data as compared to previous NVM technologies such as flash memory or magnetic hard disks. However, computer architecture in terms of software and hardware generally depends on the principle described above of loading data from an NVM into a volatile memory for a processor to access the data, and then flushing certain processed or transformed data back to the NVM if needed for persistent storage. Such operation may conflict with using an NVM that persistently stores data that is otherwise considered to be volatile by the system. In this regard, conventional systems may rely on volatile memory for many functions, such as to provide a byte-addressable memory space for accessing portions of data loaded from a full page of flash memory or from a whole sector of a disk, to provide faster access to data that has been loaded in the volatile memory, to perform operations related to data reliability and error correction, or to ensure that data is not persistently stored for security reasons. The replacement of volatile memory with developing NVM technologies therefore presents new data management concerns for data that is assumed by the system to be volatilely stored.